package com.qq.client.view;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.IOException;
import java.io.ObjectOutputStream;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import com.qq.client.model.QqClientUser;
import com.qq.client.tools.ManagerqqFrirendList;
import com.qq.client.tools.ZongThread;
import com.qq.common.Massage;
import com.qq.common.MessageType;
import com.qq.common.User;


public class QqClientLogin extends JFrame implements ActionListener{
	//定义qq界面北部要的标签
	JLabel jlb1;
	
	//定义中部要的组件一个JPanel,两个JLabel,两个JTextField，
	JPanel jp2;
	JLabel jlb2,jlb3;
	JTextField jtf;
	JPasswordField jpwf;
	
	
	//定义南部要的组件有Panel有Button
	JPanel jp1;
	JButton jp1_b1,jp1_b2,jp1_b3;
	public static void main(String[] args) {
		QqClientLogin qqclientlogin =new QqClientLogin();
	}
	public QqClientLogin(){
		//处理北部
		jlb1=new JLabel(new ImageIcon("image/tou.gif"));
		//处理中部
		jp2=new JPanel(new GridLayout(2,2));
		jlb2=new JLabel("QQ号码",JLabel.CENTER);
		jlb3=new JLabel("QQ密码",JLabel.CENTER);
		jtf=new JTextField();
		jpwf=new JPasswordField();
		jp2.add(jlb2);
		jp2.add(jtf);
		jp2.add(jlb3);
		jp2.add(jpwf);
		//处理南部
		jp1=new JPanel();
		jp1_b1=new JButton(new ImageIcon("image/denglu.gif"));
		//监听登入按钮
		jp1_b1.addActionListener(this);
		jp1_b2=new JButton(new ImageIcon("image/quxiao.gif"));
		jp1_b3=new JButton(new ImageIcon("image/xiangdao.gif"));
	    //放入Jpanle中
		jp1.add(jp1_b1);
		jp1.add(jp1_b2);
		jp1.add(jp1_b3);
		this.add(jlb1,"North");
		this.add(jp2,"Center");
		this.add(jp1,"South");
		this.setSize(350,200);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);	
		
		
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		//如果用户点击了登入按钮
		if(e.getSource()==jp1_b1){
			//创建QqClientUser对象将User对象传入到QqClientConServer中
			QqClientUser qqClientUser=new QqClientUser();
	        User u=new User();	
	        //创建User类将JTextFielt的内容传入
	        u.setUserId(jtf.getText().trim());
	        //密码的获取要用new String
	        u.setPassWord(new String(jpwf.getPassword()));
	        
	        //真正调用qqClientUser的方法返回true或false。
		    if(qqClientUser.checkUser(u)){
		    	//返回一个好友在线的请求包。
		    	try {
					//当通过判断时，就创建好友链表的对象，进入链表，同时
					//在管理链表的总类中，加入对应的链表。
					QqfriendList qqfrirend=new QqfriendList(u.getUserId());
					ManagerqqFrirendList.addQqfrirendList(u.getUserId(), qqfrirend);
					//拿到对应的线程对象。（括号中的数据，只是为了拿到当前的socket.getOutputStream .）
					ObjectOutputStream oos=new ObjectOutputStream
					(ZongThread.getClientConServerThread(u.getUserId()).getS().getOutputStream());
					
					//做一个message包。设置Mestype是得到在线好友列表。
					Massage m=new Massage();
					m.setMesType(MessageType.message_get_onLinehaoyou);
					//指明我要的是这个qq的好友链表。
					m.setSender(u.getUserId());
					//将m信息发出。
					oos.writeObject(m);
				} catch (IOException e1) {
					e1.printStackTrace();
				}
				
		    	//dispose用于关闭登入界面
		    	this.dispose();
		    }else{
		    	//否则密码错误
		    	JOptionPane.showMessageDialog(this,"用户名和密码错误");
		    }
		}
	}

}
